Swift 字符与字符串
阐述
字符(Character
)类型对应的是一个 Unicode 的扩展字素群。这个字素群可以包含一个或多个 Unicode 码位。
而字符串(String
)类型在内部存储中也是一系列 Unicode 码位的序列,它可以看作是多个 Character
的序列。
子字符串 Substring
可以用切片(Swift 范围)来获得一个子串,它是一个 Substring
对象。
Unicode 编码的访问
可以用过 utf8, utf16
以及 unicodeScalars
等属性来访问实际的编码值。
实例
let eAcute: Character = "\u{E9}" // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
性质
- 字符串的长度(
.count
)是计算字符串中字符的数量,由于要考虑到不同的字素群,所以这种计数是 O(n) 的 - 字符串不能直接用整数来索引,而需要用
String.Index
类型。这样类型有几个用法:s.startIndex, s.endIndex
获取起始和终止索引s.index(before: xxx)
或s.index(after: xxx)
根据前一个索引获取新的索引s.index(s.startIndex, offsetBy: 7)
可以获取在某一位置之后的索引s.indices
方法返回所有的索引
- 字符串的更改:可以用
insert
、remove
等函数,附加一个合适的at
参数
字符串的比较
字符串的相等性是用字素群正则等价来判断的;类似的有前缀和后缀的判断。